import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count:0,
  },
  //只有mutations中定义的函数，才有权利修改state中的数据
  mutations: {
    add(state){
      //变更状态
      state.count++;
    },
    addN(state,step){
      state.count+=step;
    },
    sub(state){
      state.count--;
    },
    subN(state,step){
      state.count-=step;
    }
  },
  //触发异步操作
  actions: {
    addAsync(context){
      setTimeout(()=>{
        //在action中，不能直接修改state中的数据；必须通过context.commit( )触发某个mutation才行
        context.commit('add');
      })
    },
    addNAsync(context,step){
       setTimeout(()=>{

         context.commit('addN',step)
       },1000)
    },
    getters:{
      showNum:state=>{
        return '当前最新的数量是【'+state.count+'】'
      }
    }
    // subAsync(context){
    //   setTimeout(()=>{

    //     context.commit('sub')
    //   },1000)
    // },
    // subNAsync(context,step){
    //   setTimeout(()=>{

    //     context.commit('subN',step)
    //   },1000)
    // }
  },
  modules: {
  }
})
